package sismed.gui.servlet;

import java.io.IOException;
import java.util.Hashtable;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sismed.gui.comando.ComandoAdministrarMedicamentos;
import sismed.gui.comando.ComandoAlterarSenha;
import sismed.gui.comando.ComandoAtualizarDadosPaciente;
import sismed.gui.comando.ComandoCadastrarReceita;
import sismed.gui.comando.ComandoCadastrarResExameParasitologico;
import sismed.gui.comando.ComandoCadastroEnfermeiro;
import sismed.gui.comando.ComandoCadastrarResExameHematologico;
import sismed.gui.comando.ComandoCadastroFarmaceutico;
import sismed.gui.comando.ComandoCadastroMedico;
import sismed.gui.comando.ComandoCadastroPaciente;
import sismed.gui.comando.ComandoCarregarDadosPaciente;
import sismed.gui.comando.ComandoCarregarExamesFarmaceutico;
import sismed.gui.comando.ComandoCarregarExamesPaciente;
import sismed.gui.comando.ComandoCarregarPrescreverExame;
import sismed.gui.comando.ComandoCarregarPacientesReceita;
import sismed.gui.comando.ComandoCarregarPessoasMensagem;
import sismed.gui.comando.ComandoConsultarMedicamentos;
import sismed.gui.comando.ComandoDetalharExame;
import sismed.gui.comando.ComandoEditarAnalista;
import sismed.gui.comando.ComandoEditarEnfermeiro;
import sismed.gui.comando.ComandoEditarFarmaceutico;
import sismed.gui.comando.ComandoEditarMedico;
import sismed.gui.comando.ComandoEditarPaciente;
import sismed.gui.comando.ComandoEnviarMensagem;
import sismed.gui.comando.ComandoExcluirPessoa;
import sismed.gui.comando.ComandoGenerico;
import sismed.gui.comando.ComandoGetAnalista;
import sismed.gui.comando.ComandoGetEnfermeiro;
import sismed.gui.comando.ComandoGetFarmaceutico;
import sismed.gui.comando.ComandoGetMedico;
import sismed.gui.comando.ComandoGetPaciente;
import sismed.gui.comando.ComandoListarCadastros;
import sismed.gui.comando.ComandoLogin;
import sismed.gui.comando.ComandoLogout;
import sismed.gui.comando.ComandoListarExamesHematologicos;
import sismed.gui.comando.ComandoCadastrarResExameUrinalise;
import sismed.gui.comando.ComandoPrescreverExame;
import sismed.gui.comando.ComandoRealizarExameHematologico;
import sismed.gui.comando.ComandoRealizarExameParasitologico;
import sismed.gui.comando.ComandoRealizarExameUrinalise;
import sismed.gui.comando.ComandoRecuperarExameUrinalise;
import sismed.gui.comando.ComandoRecuperarMensagem;
import sismed.gui.comando.ComandoRecuperarReceita;

public class ServletSISMED extends HttpServlet {
	private static final long serialVersionUID = 1L;
    private Hashtable<String, ComandoGenerico> commands;   
    public ServletSISMED() {
        super();
    }
	public void init( ServletConfig config ) throws ServletException {
		
		this.commands = new Hashtable<String, ComandoGenerico>();
		this.commands.put( "CadastrarResExameHematologico", new ComandoCadastrarResExameHematologico() );
		this.commands.put( "CadastrarResExameUrinalise", new ComandoCadastrarResExameUrinalise() );
		this.commands.put( "CadastrarResExameParasitologico", new ComandoCadastrarResExameParasitologico() );
		this.commands.put( "cadastrarPaciente", new ComandoCadastroPaciente() );
		this.commands.put( "login", new ComandoLogin() );
		this.commands.put( "logout", new ComandoLogout() );
		this.commands.put( "cadastrarMedico", new ComandoCadastroMedico() );
		this.commands.put( "cadastrarEnfermeiro", new ComandoCadastroEnfermeiro() );
		this.commands.put( "cadastrarFarmaceutico", new ComandoCadastroFarmaceutico() );
		this.commands.put( "EnviarMensagem", new ComandoEnviarMensagem() );
		this.commands.put( "VerMensagem", new ComandoRecuperarMensagem() );
		this.commands.put( "VerReceita", new ComandoRecuperarReceita() );
		this.commands.put( "administrarMedicamentos", new ComandoAdministrarMedicamentos());
		this.commands.put( "cadastrarReceituario", new ComandoCadastrarReceita() );
		this.commands.put( "ConsultarMedicamentos", new ComandoConsultarMedicamentos() );
		this.commands.put( "CadastrarResExameUrinalise", new ComandoCadastrarResExameUrinalise() );
		this.commands.put( "VerExameUrinalise", new ComandoRecuperarExameUrinalise() );
		this.commands.put( "ListarCadastros", new ComandoListarCadastros() );
		this.commands.put( "editarPaciente", new ComandoEditarPaciente());
		this.commands.put( "GetPaciente", new ComandoGetPaciente());
		this.commands.put( "editarMedico", new ComandoEditarMedico());
		this.commands.put( "GetMedico", new ComandoGetMedico());
		this.commands.put( "editarEnfermeiro", new ComandoEditarEnfermeiro());
		this.commands.put( "GetEnfermeiro", new ComandoGetEnfermeiro());
		this.commands.put( "editarFarmaceutico", new ComandoEditarFarmaceutico());
		this.commands.put( "GetFarmaceutico", new ComandoGetFarmaceutico());
		this.commands.put( "editarAnalista", new ComandoEditarAnalista());
		this.commands.put( "GetAnalista", new ComandoGetAnalista());
		this.commands.put( "AlterarSenha", new ComandoAlterarSenha());
		this.commands.put( "editarPaciente", new ComandoEditarPaciente() );
		this.commands.put( "listarExamesHematologicos", new ComandoListarExamesHematologicos() );
		this.commands.put( "PrescreverExame", new ComandoPrescreverExame() );
		this.commands.put( "CarregarPrescreverExame", new ComandoCarregarPrescreverExame() );
		this.commands.put( "DetalharExame", new ComandoDetalharExame() );
		this.commands.put( "CarregarPacientesRealizarConsulta", new ComandoCarregarPacientesReceita() );
		this.commands.put( "CarregarPessoasMensagem", new ComandoCarregarPessoasMensagem() );
		this.commands.put( "CarregarExamesPaciente", new ComandoCarregarExamesPaciente() );
		this.commands.put( "CarregarExamesFarmaceutico", new ComandoCarregarExamesFarmaceutico() );
		this.commands.put( "RealizarExameHematologico", new ComandoRealizarExameHematologico() );
		this.commands.put( "RealizarExameUrinalise", new ComandoRealizarExameUrinalise() );
		this.commands.put( "RealizarExameParasitologico", new ComandoRealizarExameParasitologico() );
		this.commands.put( "CarregarDadosPaciente", new ComandoCarregarDadosPaciente() );
		this.commands.put( "AtualizarDadosPaciente", new ComandoAtualizarDadosPaciente() );
		this.commands.put("removerCadastro", new ComandoExcluirPessoa());
	}
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String cmd = request.getParameter("Comando");
		System.out.println( request.getParameter("Comando") );
		try {
			ComandoGenerico command = (ComandoGenerico) commands.get(cmd);
			command.executar(request, response);
		} catch (Exception e) {
			String msg = "Erro grave de sistema: Cotate o Administrador";
			e.printStackTrace();
			request.setAttribute("msgErro", msg);
			request.getRequestDispatcher("erro.jsp").forward(request, response);
		}
	}

}
